﻿using System;
using System.Data.SQLite;
using System.Linq;
using System.Windows.Forms;
using Dapper;

namespace SoftLab.Formularios
{
    public partial class EditarPaciente : Template.Template
    {
        private readonly int _id;
        private string _nombre = "-";
        private string _apellido = "-";
        private string _dirección = "-";
        private string _edad = "-";
        private string _sexo = "-";
        private string _telefono = "-";

        public EditarPaciente(int id)
        {
            InitializeComponent();
            _id = id;
            Cargar();
        }

        void Cargar()
        {
            using (var conexion = new SQLiteConnection(Properties.Settings.Default.ConnectionString))
            {
                conexion.Open();
                var q = "select id, nombre, apellido, edad, sexo, direccion, telefono from pacientes where id = @Id";
                var query = conexion.Query<Clases.Pacientes>(q, new { Id = _id});
                var datos = query.ToList().First();
                txtNombre.Text = datos.Nombre;
                txtApellido.Text = datos.Apellido;
                txtDirección.Text = datos.Direccion;
                txtEdad.Text = datos.Edad;
                cmbSexo.Text = datos.Sexo;
                txtTeléfono.Text = datos.Telefono;
                conexion.Close();
            }
        }

        string Validar()
        {
            var mensaje = "-";
            if (String.IsNullOrWhiteSpace(txtNombre.Text))
                mensaje = "Nombre";
            else
                _nombre = txtNombre.Text;

            if (String.IsNullOrWhiteSpace(txtApellido.Text))
                mensaje = "Apellido";
            else
                _apellido = txtApellido.Text;

            _dirección = txtDirección.Text;
            _edad = txtEdad.Text;
            _sexo = cmbSexo.Text;
            _telefono = txtTeléfono.Text;

            if (mensaje != "-")
                return "Debe ingresar: \n -" + mensaje;
            return mensaje;
        }

        private void label2_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            string validar = Validar();
            if (validar == "-")
            {
                using (var conexion = new SQLiteConnection(Properties.Settings.Default.ConnectionString))
                {
                    conexion.Open();
                    var paciente = new Clases.Pacientes
                    {
                        Id = _id,
                        Nombre = _nombre,
                        Apellido = _apellido,
                        Direccion = _dirección,
                        Telefono = _telefono,
                        Edad = _edad,
                        Sexo = _sexo
                    };
                    const string sql = "update pacientes set nombre=@Nombre, apellido=@Apellido, direccion=@Direccion, telefono=@Telefono, edad=@Edad, sexo=@Sexo where id=@ID";
                    var id = conexion.Execute(sql, paciente);
                    if (id != 0) MessageBox.Show("Agregado correctamente.", "Agregado");
                    else
                        MessageBox.Show("Error al ingresar el paciente.", "Error", MessageBoxButtons.OK,
                            MessageBoxIcon.Error);
                    conexion.Close();
                }
                Close();
            }
            else
                MessageBox.Show(validar, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }
    }
}
